package cn.zc.utils;

import cn.zc.entity.CourceSQL;
import cn.zc.entity.ErrCources;
import cn.zc.entity.ErrorCourceVo;
import cn.zc.entity.TableData;
import cn.zc.exception.ScanException;
import cn.zc.result.Result;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class ImageUtils {
    public static ErrorCourceVo getImageInfo(MultipartFile image) {
        // 处理图片
        try {
            byte[] bytes = image.getBytes();
            //获得图片的文字信息
            String ocrResult = CourceUtils.getOCRResult(bytes);
//            String ocrResult = "{\"words_result\":[{\"words\":\"树维信息\"},{\"words\":\"教学管理系统\"},{\"words\":\"学生\"},{\"words\":\"段晶晶(2024105460144)\"},{\"words\":\"SUPWISDOM\"},{\"words\":\"Q\"},{\"words\":\"首页\"},{\"words\":\"我的\"},{\"words\":\"量化评教\"},{\"words\":\"问卷调查\"},{\"words\":\"公共服务\"},{\"words\":\"教材管理\"},{\"words\":\"您当前位置：我的>我的课表\"},{\"words\":\"课表类型：学生课表\"},{\"words\":\"√\"},{\"words\":\"|选择教学周：\"},{\"words\":\"全部\"},{\"words\":\"√\"},{\"words\":\"学年学期：\"},{\"words\":\"2024-2025学年1学期\"},{\"words\":\"切换学期\"},{\"words\":\"示\"},{\"words\":\"导出\"},{\"words\":\"打印\"},{\"words\":\"课表格式说明：教师姓名课程名称（序号）（第n周-第m周，教室）\"},{\"words\":\"节次/周次\"},{\"words\":\"星期一\"},{\"words\":\"星期二\"},{\"words\":\"星期三\"},{\"words\":\"星期四\"},{\"words\":\"星期五\"},{\"words\":\"星期六\"},{\"words\":\"星期日\"},{\"words\":\"第一节\"},{\"words\":\"线性代数A(时文芳)\"},{\"words\":\"线性代数A(时文芳)\"},{\"words\":\"高等数学B(I)(郝鑫灵)\"},{\"words\":\"高等数学B(I)(郝鑫灵)\"},{\"words\":\"美术鉴赏（面授）\"},{\"words\":\"(孙福林)\"},{\"words\":\"美术鉴赏（面授）\"},{\"words\":\"(孙福林)\"},{\"words\":\"<\"},{\"words\":\"(双6-14，周一，1-2节，7-201（多\"},{\"words\":\"(4-16,周三，1-2节，13-304（多\"},{\"words\":\"(4-16,周四，1-2节，10-501（多\"},{\"words\":\"(单5-15，周五，1-2节，10-\"},{\"words\":\"(4-5,周六，1-2节，14-127（多媒(4，周日，1-2节，14-127（多媒体\"},{\"words\":\"第二节\"},{\"words\":\"媒体教室)\"},{\"words\":\"媒体教室)\"},{\"words\":\"媒体教室)\"},{\"words\":\"501(多媒体教室)\"},{\"words\":\"体教室)\"},{\"words\":\"教室)\"},{\"words\":\"第三节\"},{\"words\":\"高等数学B(I)(郝鑫灵)\"},{\"words\":\"高等数学B(I)(郝鑫灵)\"},{\"words\":\"线性代数A(时文芳)\"},{\"words\":\"大学英语A(II)(葛玉清)\"},{\"words\":\"英语口语(I)(梁东)\"},{\"words\":\"(5-16.周二，3-4节，10-501（多\"},{\"words\":\"(4-12,周三，3-4节，10-501（多\"},{\"words\":\"(单5-15，周四，3-4节，15-\"},{\"words\":\"(4-16,周五，3-4节，5-303（多媒(4-6，周六，3-4节，16-317（智慧\"},{\"words\":\"第四节\"},{\"words\":\"媒体教室)\"},{\"words\":\"媒体教室)\"},{\"words\":\"107(多媒体教室)\"},{\"words\":\"体教室)\"},{\"words\":\"口语教室)\"},{\"words\":\"第五节\"},{\"words\":\"大学英语A\"},{\"words\":\"(葛玉清)\"},{\"words\":\"计算机科学导论（侯怡安）\"},{\"words\":\"心理健康教育（郭文凯）\"},{\"words\":\"大学体育（一）（栗青）\"},{\"words\":\"(4-16.周一，5-6节，13-310（多\"},{\"words\":\"(5-11,周二，5-6节，7-503（多媒\"},{\"words\":\"(双4-16，周四，5-6节，14-\"},{\"words\":\"(4-16,周五，5-6节，CUBA南\"},{\"words\":\"第六节\"},{\"words\":\"媒体教室)\"},{\"words\":\"体教室)\"},{\"words\":\"239(多媒体教室)\"},{\"words\":\"侧-运动公园-篮球场1()\"},{\"words\":\"第七节\"},{\"words\":\"形势与政策（范广军）\"},{\"words\":\"大学英语A(II)(葛玉清)\"},{\"words\":\"民法典（面授）（吴慧娟）\"},{\"words\":\"大学体育（一）（栗青）\"},{\"words\":\"(5-8,周一，7-8节，15-113（多媒\"},{\"words\":\"(单5-15，周二，7-8节，[11-232]\"},{\"words\":\"(4-11,周四，7-8节，1-501（多媒\"},{\"words\":\"(13-15,周六，7-8节，CUBA南\"},{\"words\":\"第八节\"},{\"words\":\"体教室)\"},{\"words\":\"(语音室3)（语音室）)\"},{\"words\":\"体教室)\"},{\"words\":\"侧-运动公园-篮球场2()\"},{\"words\":\"第九节\"},{\"words\":\"美术鉴赏（面授）（孙福林）\"},{\"words\":\"(4-16,周一，9-10节，14-\"},{\"words\":\"第十节\"},{\"words\":\"127(多媒体教室)\"},{\"words\":\"第十一节\"},{\"words\":\"英语口语(I)(梁东)\"},{\"words\":\"计算机科学导论（侯怡安）\"},{\"words\":\"思想道德与法治（郭一蒙）\"},{\"words\":\"(4-16,周三，11-12节，16-\"},{\"words\":\"第十二节\"},{\"words\":\"(单5-15，周一，11-13节，13-\"},{\"words\":\"(4-16,周二，11-13节，15-\"},{\"words\":\"317(智慧口语教室)\"},{\"words\":\"302(多媒体教室)\"},{\"words\":\"114(多媒体教室)\"},{\"words\":\"思想道德与法治（郭一蒙）\"},{\"words\":\"第十三节\"},{\"words\":\"(16,周四，13-13节，13-107（多\"},{\"words\":\"媒体教室)\"}],\"words_result_num\":120,\"log_id\":1853230132096185919}";

            String studentId = StringUtils.extractNumber(ocrResult);
            //封装为Cource对象集合
            ErrCources errCources = StringUtils.extractScheduleInfo(ocrResult);
            //封装为CourceSqQL对象集合
            List<CourceSQL> courceVo = CourceUtils.getCourceVo(errCources.getCources(), studentId);
            ErrorCourceVo errorCourceVo = new ErrorCourceVo();
            errorCourceVo.setCourceVo(courceVo);
            errorCourceVo.setErrcourceVo(errCources.getErrCourceIds());
            if(studentId==null){
                errCources.getErrCourceIds().add(-1);
            }
            return errorCourceVo;
        } catch (IOException e) {
            throw new ScanException("图片上传失败");
        }
    }
//    public static List<TableData> getTableData(ErrorCourceVo errorCourceVo){
//        List<TableData> tableArr = new ArrayList<>();
//        List<CourceSQL> vo=errorCourceVo.getCourceVo();
//        //  alert(response.data.data.errcourceVo+'这几周扫描失败，请手动填写')
//        //筛选出vo中period为1的数据
//        int num=1;
//        while(num<6){
//            int finalNum = num;
//            List<CourceSQL> periodOneData = vo.stream()
//                    .filter(item -> item.getPeriod() == finalNum)
//                    .toList();
//            num++;
//        }
//    }

}
